//---------------------------------------------------------------------
// uQRCode二维码生成插件 v4.0.6
//
// uQRCode是一款基于Javascript环境开发的二维码生成插件，适用所有Javascript运行环境的前端应用和Node.js。
//
// Copyright (c) Sansnn uQRCode All rights reserved.
//
// Licensed under the Apache License, Version 2.0.
//   http://www.apache.org/licenses/LICENSE-2.0
//
// github地址：
//   https://github.com/Sansnn/uQRCode
//
// npm地址：
//   https://www.npmjs.com/package/uqrcodejs
//
// uni-app插件市场地址：
//   https://ext.dcloud.net.cn/plugin?id=1287
//
// 复制使用请保留本段注释，感谢支持开源！
//
//---------------------------------------------------------------------

//---------------------------------------------------------------------
// 当前文件格式为 es，将 bundle 保留为 ES 模块文件，适用于其他打包工具以及支持 <script type=module> 标签的浏览器（别名: esm，module）
// 如需在其他环境使用，请获取环境对应的格式文件
// 格式说明：
// amd - 异步模块定义，适用于 RequireJS 等模块加载器
// cjs - CommonJS，适用于 Node 环境和其他打包工具（别名：commonjs）
// es - 将 bundle 保留为 ES 模块文件，适用于其他打包工具以及支持 <script type=module> 标签的浏览器（别名: esm，module）
// umd - 通用模块定义，生成的包同时支持 amd、cjs 和 iife 三种格式
//---------------------------------------------------------------------

function o(o) {
  (this.mode = r.MODE_8BIT_BYTE), (this.data = o);
}
function e(o, e) {
  (this.typeNumber = o),
    (this.errorCorrectLevel = e),
    (this.modules = null),
    (this.moduleCount = 0),
    (this.dataCache = null),
    (this.dataList = new Array());
}
(o.prototype = {
  getLength: function (o) {
    return this.data.length;
  },
  write: function (o) {
    for (var e = 0; e < this.data.length; e++) o.put(this.data.charCodeAt(e), 8);
  }
}),
  (e.prototype = {
    addData: function (e) {
      var r = new o(e);
      this.dataList.push(r), (this.dataCache = null);
    },
    isDark: function (o, e) {
      if (o < 0 || this.moduleCount <= o || e < 0 || this.moduleCount <= e) throw new Error(o + ',' + e);
      return this.modules[o][e];
    },
    getModuleCount: function () {
      return this.moduleCount;
    },
    make: function () {
      if (this.typeNumber < 1) {
        var o = 1;
        for (o = 1; o < 40; o++) {
          for (var e = v.getRSBlocks(o, this.errorCorrectLevel), r = new p(), t = 0, i = 0; i < e.length; i++)
            t += e[i].dataCount;
          for (i = 0; i < this.dataList.length; i++) {
            var n = this.dataList[i];
            r.put(n.mode, 4), r.put(n.getLength(), h.getLengthInBits(n.mode, o)), n.write(r);
          }
          if (r.getLengthInBits() <= 8 * t) break;
        }
        this.typeNumber = o;
      }
      this.makeImpl(!1, this.getBestMaskPattern());
    },
    makeImpl: function (o, r) {
      (this.moduleCount = 4 * this.typeNumber + 17), (this.modules = new Array(this.moduleCount));
      for (var t = 0; t < this.moduleCount; t++) {
        this.modules[t] = new Array(this.moduleCount);
        for (var i = 0; i < this.moduleCount; i++) this.modules[t][i] = null;
      }
      this.setupPositionProbePattern(0, 0),
        this.setupPositionProbePattern(this.moduleCount - 7, 0),
        this.setupPositionProbePattern(0, this.moduleCount - 7),
        this.setupPositionAdjustPattern(),
        this.setupTimingPattern(),
        this.setupTypeInfo(o, r),
        this.typeNumber >= 7 && this.setupTypeNumber(o),
        null == this.dataCache &&
          (this.dataCache = e.createData(this.typeNumber, this.errorCorrectLevel, this.dataList)),
        this.mapData(this.dataCache, r);
    },
    setupPositionProbePattern: function (o, e) {
      for (var r = -1; r <= 7; r++)
        if (!(o + r <= -1 || this.moduleCount <= o + r))
          for (var t = -1; t <= 7; t++)
            e + t <= -1 ||
              this.moduleCount <= e + t ||
              (this.modules[o + r][e + t] =
                (0 <= r && r <= 6 && (0 == t || 6 == t)) ||
                (0 <= t && t <= 6 && (0 == r || 6 == r)) ||
                (2 <= r && r <= 4 && 2 <= t && t <= 4));
    },
    getBestMaskPattern: function () {
      for (var o = 0, e = 0, r = 0; r < 8; r++) {
        this.makeImpl(!0, r);
        var t = h.getLostPoint(this);
        (0 == r || o > t) && ((o = t), (e = r));
      }
      return e;
    },
    createMovieClip: function (o, e, r) {
      var t = o.createEmptyMovieClip(e, r);
      this.make();
      for (var i = 0; i < this.modules.length; i++)
        for (var n = 1 * i, a = 0; a < this.modules[i].length; a++) {
          var d = 1 * a;
          this.modules[i][a] &&
            (t.beginFill(0, 100),
            t.moveTo(d, n),
            t.lineTo(d + 1, n),
            t.lineTo(d + 1, n + 1),
            t.lineTo(d, n + 1),
            t.endFill());
        }
      return t;
    },
    setupTimingPattern: function () {
      for (var o = 8; o < this.moduleCount - 8; o++) null == this.modules[o][6] && (this.modules[o][6] = o % 2 == 0);
      for (var e = 8; e < this.moduleCount - 8; e++) null == this.modules[6][e] && (this.modules[6][e] = e % 2 == 0);
    },
    setupPositionAdjustPattern: function () {
      for (var o = h.getPatternPosition(this.typeNumber), e = 0; e < o.length; e++)
        for (var r = 0; r < o.length; r++) {
          var t = o[e],
            i = o[r];
          if (null == this.modules[t][i])
            for (var n = -2; n <= 2; n++)
              for (var a = -2; a <= 2; a++)
                this.modules[t + n][i + a] = -2 == n || 2 == n || -2 == a || 2 == a || (0 == n && 0 == a);
        }
    },
    setupTypeNumber: function (o) {
      for (var e = h.getBCHTypeNumber(this.typeNumber), r = 0; r < 18; r++) {
        var t = !o && 1 == ((e >> r) & 1);
        this.modules[Math.floor(r / 3)][(r % 3) + this.moduleCount - 8 - 3] = t;
      }
      for (r = 0; r < 18; r++) {
        t = !o && 1 == ((e >> r) & 1);
        this.modules[(r % 3) + this.moduleCount - 8 - 3][Math.floor(r / 3)] = t;
      }
    },
    setupTypeInfo: function (o, e) {
      for (var r = (this.errorCorrectLevel << 3) | e, t = h.getBCHTypeInfo(r), i = 0; i < 15; i++) {
        var n = !o && 1 == ((t >> i) & 1);
        i < 6
          ? (this.modules[i][8] = n)
          : i < 8
          ? (this.modules[i + 1][8] = n)
          : (this.modules[this.moduleCount - 15 + i][8] = n);
      }
      for (i = 0; i < 15; i++) {
        n = !o && 1 == ((t >> i) & 1);
        i < 8
          ? (this.modules[8][this.moduleCount - i - 1] = n)
          : i < 9
          ? (this.modules[8][15 - i - 1 + 1] = n)
          : (this.modules[8][15 - i - 1] = n);
      }
      this.modules[this.moduleCount - 8][8] = !o;
    },
    mapData: function (o, e) {
      for (var r = -1, t = this.moduleCount - 1, i = 7, n = 0, a = this.moduleCount - 1; a > 0; a -= 2)
        for (6 == a && a--; ; ) {
          for (var d = 0; d < 2; d++)
            if (null == this.modules[t][a - d]) {
              var u = !1;
              n < o.length && (u = 1 == ((o[n] >>> i) & 1)),
                h.getMask(e, t, a - d) && (u = !u),
                (this.modules[t][a - d] = u),
                -1 == --i && (n++, (i = 7));
            }
          if ((t += r) < 0 || this.moduleCount <= t) {
            (t -= r), (r = -r);
            break;
          }
        }
    }
  }),
  (e.PAD0 = 236),
  (e.PAD1 = 17),
  (e.createData = function (o, r, t) {
    for (var i = v.getRSBlocks(o, r), n = new p(), a = 0; a < t.length; a++) {
      var d = t[a];
      n.put(d.mode, 4), n.put(d.getLength(), h.getLengthInBits(d.mode, o)), d.write(n);
    }
    var u = 0;
    for (a = 0; a < i.length; a++) u += i[a].dataCount;
    if (n.getLengthInBits() > 8 * u)
      throw new Error('code length overflow. (' + n.getLengthInBits() + '>' + 8 * u + ')');
    for (n.getLengthInBits() + 4 <= 8 * u && n.put(0, 4); n.getLengthInBits() % 8 != 0; ) n.putBit(!1);
    for (; !(n.getLengthInBits() >= 8 * u || (n.put(e.PAD0, 8), n.getLengthInBits() >= 8 * u)); ) n.put(e.PAD1, 8);
    return e.createBytes(n, i);
  }),
  (e.createBytes = function (o, e) {
    for (var r = 0, t = 0, i = 0, n = new Array(e.length), a = new Array(e.length), d = 0; d < e.length; d++) {
      var u = e[d].dataCount,
        s = e[d].totalCount - u;
      (t = Math.max(t, u)), (i = Math.max(i, s)), (n[d] = new Array(u));
      for (var g = 0; g < n[d].length; g++) n[d][g] = 255 & o.buffer[g + r];
      r += u;
      var l = h.getErrorCorrectPolynomial(s),
        c = new f(n[d], l.getLength() - 1).mod(l);
      a[d] = new Array(l.getLength() - 1);
      for (g = 0; g < a[d].length; g++) {
        var m = g + c.getLength() - a[d].length;
        a[d][g] = m >= 0 ? c.get(m) : 0;
      }
    }
    var v = 0;
    for (g = 0; g < e.length; g++) v += e[g].totalCount;
    var p = new Array(v),
      C = 0;
    for (g = 0; g < t; g++) for (d = 0; d < e.length; d++) g < n[d].length && (p[C++] = n[d][g]);
    for (g = 0; g < i; g++) for (d = 0; d < e.length; d++) g < a[d].length && (p[C++] = a[d][g]);
    return p;
  });
for (
  var r = { MODE_NUMBER: 1, MODE_ALPHA_NUM: 2, MODE_8BIT_BYTE: 4, MODE_KANJI: 8 },
    t = { L: 1, M: 0, Q: 3, H: 2 },
    i = 0,
    n = 1,
    a = 2,
    d = 3,
    u = 4,
    s = 5,
    g = 6,
    l = 7,
    h = {
      PATTERN_POSITION_TABLE: [
        [],
        [6, 18],
        [6, 22],
        [6, 26],
        [6, 30],
        [6, 34],
        [6, 22, 38],
        [6, 24, 42],
        [6, 26, 46],
        [6, 28, 50],
        [6, 30, 54],
        [6, 32, 58],
        [6, 34, 62],
        [6, 26, 46, 66],
        [6, 26, 48, 70],
        [6, 26, 50, 74],
        [6, 30, 54, 78],
        [6, 30, 56, 82],
        [6, 30, 58, 86],
        [6, 34, 62, 90],
        [6, 28, 50, 72, 94],
        [6, 26, 50, 74, 98],
        [6, 30, 54, 78, 102],
        [6, 28, 54, 80, 106],
        [6, 32, 58, 84, 110],
        [6, 30, 58, 86, 114],
        [6, 34, 62, 90, 118],
        [6, 26, 50, 74, 98, 122],
        [6, 30, 54, 78, 102, 126],
        [6, 26, 52, 78, 104, 130],
        [6, 30, 56, 82, 108, 134],
        [6, 34, 60, 86, 112, 138],
        [6, 30, 58, 86, 114, 142],
        [6, 34, 62, 90, 118, 146],
        [6, 30, 54, 78, 102, 126, 150],
        [6, 24, 50, 76, 102, 128, 154],
        [6, 28, 54, 80, 106, 132, 158],
        [6, 32, 58, 84, 110, 136, 162],
        [6, 26, 54, 82, 110, 138, 166],
        [6, 30, 58, 86, 114, 142, 170]
      ],
      G15: 1335,
      G18: 7973,
      G15_MASK: 21522,
      getBCHTypeInfo: function (o) {
        for (var e = o << 10; h.getBCHDigit(e) - h.getBCHDigit(h.G15) >= 0; )
          e ^= h.G15 << (h.getBCHDigit(e) - h.getBCHDigit(h.G15));
        return ((o << 10) | e) ^ h.G15_MASK;
      },
      getBCHTypeNumber: function (o) {
        for (var e = o << 12; h.getBCHDigit(e) - h.getBCHDigit(h.G18) >= 0; )
          e ^= h.G18 << (h.getBCHDigit(e) - h.getBCHDigit(h.G18));
        return (o << 12) | e;
      },
      getBCHDigit: function (o) {
        for (var e = 0; 0 != o; ) e++, (o >>>= 1);
        return e;
      },
      getPatternPosition: function (o) {
        return h.PATTERN_POSITION_TABLE[o - 1];
      },
      getMask: function (o, e, r) {
        switch (o) {
          case i:
            return (e + r) % 2 == 0;
          case n:
            return e % 2 == 0;
          case a:
            return r % 3 == 0;
          case d:
            return (e + r) % 3 == 0;
          case u:
            return (Math.floor(e / 2) + Math.floor(r / 3)) % 2 == 0;
          case s:
            return ((e * r) % 2) + ((e * r) % 3) == 0;
          case g:
            return (((e * r) % 2) + ((e * r) % 3)) % 2 == 0;
          case l:
            return (((e * r) % 3) + ((e + r) % 2)) % 2 == 0;
          default:
            throw new Error('bad maskPattern:' + o);
        }
      },
      getErrorCorrectPolynomial: function (o) {
        for (var e = new f([1], 0), r = 0; r < o; r++) e = e.multiply(new f([1, c.gexp(r)], 0));
        return e;
      },
      getLengthInBits: function (o, e) {
        if (1 <= e && e < 10)
          switch (o) {
            case r.MODE_NUMBER:
              return 10;
            case r.MODE_ALPHA_NUM:
              return 9;
            case r.MODE_8BIT_BYTE:
            case r.MODE_KANJI:
              return 8;
            default:
              throw new Error('mode:' + o);
          }
        else if (e < 27)
          switch (o) {
            case r.MODE_NUMBER:
              return 12;
            case r.MODE_ALPHA_NUM:
              return 11;
            case r.MODE_8BIT_BYTE:
              return 16;
            case r.MODE_KANJI:
              return 10;
            default:
              throw new Error('mode:' + o);
          }
        else {
          if (!(e < 41)) throw new Error('type:' + e);
          switch (o) {
            case r.MODE_NUMBER:
              return 14;
            case r.MODE_ALPHA_NUM:
              return 13;
            case r.MODE_8BIT_BYTE:
              return 16;
            case r.MODE_KANJI:
              return 12;
            default:
              throw new Error('mode:' + o);
          }
        }
      },
      getLostPoint: function (o) {
        for (var e = o.getModuleCount(), r = 0, t = 0; t < e; t++)
          for (var i = 0; i < e; i++) {
            for (var n = 0, a = o.isDark(t, i), d = -1; d <= 1; d++)
              if (!(t + d < 0 || e <= t + d))
                for (var u = -1; u <= 1; u++)
                  i + u < 0 || e <= i + u || (0 == d && 0 == u) || (a == o.isDark(t + d, i + u) && n++);
            n > 5 && (r += 3 + n - 5);
          }
        for (t = 0; t < e - 1; t++)
          for (i = 0; i < e - 1; i++) {
            var s = 0;
            o.isDark(t, i) && s++,
              o.isDark(t + 1, i) && s++,
              o.isDark(t, i + 1) && s++,
              o.isDark(t + 1, i + 1) && s++,
              (0 != s && 4 != s) || (r += 3);
          }
        for (t = 0; t < e; t++)
          for (i = 0; i < e - 6; i++)
            o.isDark(t, i) &&
              !o.isDark(t, i + 1) &&
              o.isDark(t, i + 2) &&
              o.isDark(t, i + 3) &&
              o.isDark(t, i + 4) &&
              !o.isDark(t, i + 5) &&
              o.isDark(t, i + 6) &&
              (r += 40);
        for (i = 0; i < e; i++)
          for (t = 0; t < e - 6; t++)
            o.isDark(t, i) &&
              !o.isDark(t + 1, i) &&
              o.isDark(t + 2, i) &&
              o.isDark(t + 3, i) &&
              o.isDark(t + 4, i) &&
              !o.isDark(t + 5, i) &&
              o.isDark(t + 6, i) &&
              (r += 40);
        var g = 0;
        for (i = 0; i < e; i++) for (t = 0; t < e; t++) o.isDark(t, i) && g++;
        return (r += 10 * (Math.abs((100 * g) / e / e - 50) / 5));
      }
    },
    c = {
      glog: function (o) {
        if (o < 1) throw new Error('glog(' + o + ')');
        return c.LOG_TABLE[o];
      },
      gexp: function (o) {
        for (; o < 0; ) o += 255;
        for (; o >= 256; ) o -= 255;
        return c.EXP_TABLE[o];
      },
      EXP_TABLE: new Array(256),
      LOG_TABLE: new Array(256)
    },
    m = 0;
  m < 8;
  m++
)
  c.EXP_TABLE[m] = 1 << m;
for (m = 8; m < 256; m++)
  c.EXP_TABLE[m] = c.EXP_TABLE[m - 4] ^ c.EXP_TABLE[m - 5] ^ c.EXP_TABLE[m - 6] ^ c.EXP_TABLE[m - 8];
for (m = 0; m < 255; m++) c.LOG_TABLE[c.EXP_TABLE[m]] = m;
function f(o, e) {
  if (null == o.length) throw new Error(o.length + '/' + e);
  for (var r = 0; r < o.length && 0 == o[r]; ) r++;
  this.num = new Array(o.length - r + e);
  for (var t = 0; t < o.length - r; t++) this.num[t] = o[t + r];
}
function v(o, e) {
  (this.totalCount = o), (this.dataCount = e);
}
function p() {
  (this.buffer = new Array()), (this.length = 0);
}
function C(o) {
  return (
    (o.setFillStyle =
      o.setFillStyle ||
      function (e) {
        o.fillStyle = e;
      }),
    (o.setFontSize =
      o.setFontSize ||
      function (e) {
        o.font = `${e}px`;
      }),
    (o.setTextAlign =
      o.setTextAlign ||
      function (e) {
        o.textAlign = e;
      }),
    (o.setTextBaseline =
      o.setTextBaseline ||
      function (e) {
        o.textBaseline = e;
      }),
    (o.setGlobalAlpha =
      o.setGlobalAlpha ||
      function (e) {
        o.globalAlpha = e;
      }),
    (o.setStrokeStyle =
      o.setStrokeStyle ||
      function (e) {
        o.strokeStyle = e;
      }),
    (o.setShadow =
      o.setShadow ||
      function (e, r, t, i) {
        (o.shadowOffsetX = e), (o.shadowOffsetY = r), (o.shadowBlur = t), (o.shadowColor = i);
      }),
    (o.draw =
      o.draw ||
      function (o, e) {
        e && e();
      }),
    (o.clearRect =
      o.clearRect ||
      function (e, r, t, i) {
        o.draw(!1);
      }),
    o
  );
}
function b(o, e) {
  var r = (this.data = ''),
    t = (this.size = 200);
  (this.useDynamicSize = !1), (this.dynamicSize = t);
  var i = (this.typeNumber = -1);
  this.errorCorrectLevel = b.errorCorrectLevel.H;
  var n = (this.margin = 0);
  (this.areaColor = '#FFFFFF'), (this.backgroundColor = 'rgba(255,255,255,0)'), (this.backgroundImageSrc = void 0);
  var a = (this.backgroundImageWidth = void 0),
    d = (this.backgroundImageHeight = void 0),
    u = (this.backgroundImageX = void 0),
    s = (this.backgroundImageY = void 0);
  (this.backgroundImageAlpha = 1), (this.backgroundImageBorderRadius = 0);
  var g = (this.backgroundPadding = 0);
  (this.foregroundColor = '#000000'), (this.foregroundImageSrc = void 0);
  var l = (this.foregroundImageWidth = void 0),
    h = (this.foregroundImageHeight = void 0),
    c = (this.foregroundImageX = void 0),
    m = (this.foregroundImageY = void 0),
    f = (this.foregroundImagePadding = 0);
  this.foregroundImageBackgroundColor = '#FFFFFF';
  var v = (this.foregroundImageBorderRadius = 0),
    p = (this.foregroundImageShadowOffsetX = 0),
    k = (this.foregroundImageShadowOffsetY = 0),
    y = (this.foregroundImageShadowBlur = 0);
  this.foregroundImageShadowColor = '#808080';
  var w = (this.foregroundPadding = 0),
    I = (this.positionProbeBackgroundColor = void 0),
    B = (this.positionProbeForegroundColor = void 0),
    S = (this.separatorColor = void 0),
    P = (this.positionAdjustBackgroundColor = void 0),
    L = (this.positionAdjustForegroundColor = void 0),
    D = (this.timingBackgroundColor = void 0),
    A = (this.timingForegroundColor = void 0),
    E = (this.typeNumberBackgroundColor = void 0),
    T = (this.typeNumberForegroundColor = void 0),
    N = (this.darkBlockColor = void 0);
  (this.base = void 0), (this.modules = []), (this.moduleCount = 0), (this.drawModules = []);
  var M = (this.canvasContext = void 0);
  this.loadImage,
    (this.drawReserve = !1),
    (this.isMaked = !1),
    Object.defineProperties(this, {
      data: {
        get() {
          if ('' === r || void 0 === r)
            throw (console.error('[uQRCode]: data must be set!'), new b.Error('data must be set!'));
          return r;
        },
        set(o) {
          r = String(o);
        }
      },
      size: {
        get: () => t,
        set(o) {
          t = Number(o);
        }
      },
      typeNumber: {
        get: () => i,
        set(o) {
          i = Number(o);
        }
      },
      margin: {
        get: () => n,
        set(o) {
          n = Number(o);
        }
      },
      backgroundImageWidth: {
        get() {
          return void 0 === a ? this.dynamicSize : this.useDynamicSize ? (this.dynamicSize / this.size) * a : a;
        },
        set(o) {
          a = Number(o);
        }
      },
      backgroundImageHeight: {
        get() {
          return void 0 === d ? this.dynamicSize : this.useDynamicSize ? (this.dynamicSize / this.size) * d : d;
        },
        set(o) {
          d = Number(o);
        }
      },
      backgroundImageX: {
        get() {
          return void 0 === u ? 0 : this.useDynamicSize ? (this.dynamicSize / this.size) * u : u;
        },
        set(o) {
          u = Number(o);
        }
      },
      backgroundImageY: {
        get() {
          return void 0 === s ? 0 : this.useDynamicSize ? (this.dynamicSize / this.size) * s : s;
        },
        set(o) {
          s = Number(o);
        }
      },
      backgroundPadding: {
        get: () => g,
        set(o) {
          g = o > 1 ? 1 : o < 0 ? 0 : o;
        }
      },
      foregroundImageWidth: {
        get() {
          return void 0 === l
            ? (this.dynamicSize - 2 * this.margin) / 4
            : this.useDynamicSize
            ? (this.dynamicSize / this.size) * l
            : l;
        },
        set(o) {
          l = Number(o);
        }
      },
      foregroundImageHeight: {
        get() {
          return void 0 === h
            ? (this.dynamicSize - 2 * this.margin) / 4
            : this.useDynamicSize
            ? (this.dynamicSize / this.size) * h
            : h;
        },
        set(o) {
          h = Number(o);
        }
      },
      foregroundImageX: {
        get() {
          return void 0 === c
            ? this.dynamicSize / 2 - this.foregroundImageWidth / 2
            : this.useDynamicSize
            ? (this.dynamicSize / this.size) * c
            : c;
        },
        set(o) {
          c = Number(o);
        }
      },
      foregroundImageY: {
        get() {
          return void 0 === m
            ? this.dynamicSize / 2 - this.foregroundImageHeight / 2
            : this.useDynamicSize
            ? (this.dynamicSize / this.size) * m
            : m;
        },
        set(o) {
          m = Number(o);
        }
      },
      foregroundImagePadding: {
        get() {
          return this.useDynamicSize ? (this.dynamicSize / this.size) * f : f;
        },
        set(o) {
          f = Number(o);
        }
      },
      foregroundImageBorderRadius: {
        get() {
          return this.useDynamicSize ? (this.dynamicSize / this.size) * v : v;
        },
        set(o) {
          v = Number(o);
        }
      },
      foregroundImageShadowOffsetX: {
        get() {
          return this.useDynamicSize ? (this.dynamicSize / this.size) * p : p;
        },
        set(o) {
          p = Number(o);
        }
      },
      foregroundImageShadowOffsetY: {
        get() {
          return this.useDynamicSize ? (this.dynamicSize / this.size) * k : k;
        },
        set(o) {
          k = Number(o);
        }
      },
      foregroundImageShadowBlur: {
        get() {
          return this.useDynamicSize ? (this.dynamicSize / this.size) * y : y;
        },
        set(o) {
          y = Number(o);
        }
      },
      foregroundPadding: {
        get: () => w,
        set(o) {
          w = o > 1 ? 1 : o < 0 ? 0 : o;
        }
      },
      positionProbeBackgroundColor: {
        get() {
          return I || this.backgroundColor;
        },
        set(o) {
          I = o;
        }
      },
      positionProbeForegroundColor: {
        get() {
          return B || this.foregroundColor;
        },
        set(o) {
          B = o;
        }
      },
      separatorColor: {
        get() {
          return S || this.backgroundColor;
        },
        set(o) {
          S = o;
        }
      },
      positionAdjustBackgroundColor: {
        get() {
          return P || this.backgroundColor;
        },
        set(o) {
          P = o;
        }
      },
      positionAdjustForegroundColor: {
        get() {
          return L || this.foregroundColor;
        },
        set(o) {
          L = o;
        }
      },
      timingBackgroundColor: {
        get() {
          return D || this.backgroundColor;
        },
        set(o) {
          D = o;
        }
      },
      timingForegroundColor: {
        get() {
          return A || this.foregroundColor;
        },
        set(o) {
          A = o;
        }
      },
      typeNumberBackgroundColor: {
        get() {
          return E || this.backgroundColor;
        },
        set(o) {
          E = o;
        }
      },
      typeNumberForegroundColor: {
        get() {
          return T || this.foregroundColor;
        },
        set(o) {
          T = o;
        }
      },
      darkBlockColor: {
        get() {
          return N || this.foregroundColor;
        },
        set(o) {
          N = o;
        }
      },
      canvasContext: {
        get() {
          if (void 0 === M)
            throw (
              (console.error('[uQRCode]: use drawCanvas, you need to set the canvasContext!'),
              new b.Error('use drawCanvas, you need to set the canvasContext!'))
            );
          return M;
        },
        set(o) {
          M = C(o);
        }
      }
    }),
    b.plugins.forEach((o) => o(b, this, !1)),
    o && this.setOptions(o),
    e && (this.canvasContext = C(e));
}
(f.prototype = {
  get: function (o) {
    return this.num[o];
  },
  getLength: function () {
    return this.num.length;
  },
  multiply: function (o) {
    for (var e = new Array(this.getLength() + o.getLength() - 1), r = 0; r < this.getLength(); r++)
      for (var t = 0; t < o.getLength(); t++) e[r + t] ^= c.gexp(c.glog(this.get(r)) + c.glog(o.get(t)));
    return new f(e, 0);
  },
  mod: function (o) {
    if (this.getLength() - o.getLength() < 0) return this;
    for (
      var e = c.glog(this.get(0)) - c.glog(o.get(0)), r = new Array(this.getLength()), t = 0;
      t < this.getLength();
      t++
    )
      r[t] = this.get(t);
    for (t = 0; t < o.getLength(); t++) r[t] ^= c.gexp(c.glog(o.get(t)) + e);
    return new f(r, 0).mod(o);
  }
}),
  (v.RS_BLOCK_TABLE = [
    [1, 26, 19],
    [1, 26, 16],
    [1, 26, 13],
    [1, 26, 9],
    [1, 44, 34],
    [1, 44, 28],
    [1, 44, 22],
    [1, 44, 16],
    [1, 70, 55],
    [1, 70, 44],
    [2, 35, 17],
    [2, 35, 13],
    [1, 100, 80],
    [2, 50, 32],
    [2, 50, 24],
    [4, 25, 9],
    [1, 134, 108],
    [2, 67, 43],
    [2, 33, 15, 2, 34, 16],
    [2, 33, 11, 2, 34, 12],
    [2, 86, 68],
    [4, 43, 27],
    [4, 43, 19],
    [4, 43, 15],
    [2, 98, 78],
    [4, 49, 31],
    [2, 32, 14, 4, 33, 15],
    [4, 39, 13, 1, 40, 14],
    [2, 121, 97],
    [2, 60, 38, 2, 61, 39],
    [4, 40, 18, 2, 41, 19],
    [4, 40, 14, 2, 41, 15],
    [2, 146, 116],
    [3, 58, 36, 2, 59, 37],
    [4, 36, 16, 4, 37, 17],
    [4, 36, 12, 4, 37, 13],
    [2, 86, 68, 2, 87, 69],
    [4, 69, 43, 1, 70, 44],
    [6, 43, 19, 2, 44, 20],
    [6, 43, 15, 2, 44, 16],
    [4, 101, 81],
    [1, 80, 50, 4, 81, 51],
    [4, 50, 22, 4, 51, 23],
    [3, 36, 12, 8, 37, 13],
    [2, 116, 92, 2, 117, 93],
    [6, 58, 36, 2, 59, 37],
    [4, 46, 20, 6, 47, 21],
    [7, 42, 14, 4, 43, 15],
    [4, 133, 107],
    [8, 59, 37, 1, 60, 38],
    [8, 44, 20, 4, 45, 21],
    [12, 33, 11, 4, 34, 12],
    [3, 145, 115, 1, 146, 116],
    [4, 64, 40, 5, 65, 41],
    [11, 36, 16, 5, 37, 17],
    [11, 36, 12, 5, 37, 13],
    [5, 109, 87, 1, 110, 88],
    [5, 65, 41, 5, 66, 42],
    [5, 54, 24, 7, 55, 25],
    [11, 36, 12],
    [5, 122, 98, 1, 123, 99],
    [7, 73, 45, 3, 74, 46],
    [15, 43, 19, 2, 44, 20],
    [3, 45, 15, 13, 46, 16],
    [1, 135, 107, 5, 136, 108],
    [10, 74, 46, 1, 75, 47],
    [1, 50, 22, 15, 51, 23],
    [2, 42, 14, 17, 43, 15],
    [5, 150, 120, 1, 151, 121],
    [9, 69, 43, 4, 70, 44],
    [17, 50, 22, 1, 51, 23],
    [2, 42, 14, 19, 43, 15],
    [3, 141, 113, 4, 142, 114],
    [3, 70, 44, 11, 71, 45],
    [17, 47, 21, 4, 48, 22],
    [9, 39, 13, 16, 40, 14],
    [3, 135, 107, 5, 136, 108],
    [3, 67, 41, 13, 68, 42],
    [15, 54, 24, 5, 55, 25],
    [15, 43, 15, 10, 44, 16],
    [4, 144, 116, 4, 145, 117],
    [17, 68, 42],
    [17, 50, 22, 6, 51, 23],
    [19, 46, 16, 6, 47, 17],
    [2, 139, 111, 7, 140, 112],
    [17, 74, 46],
    [7, 54, 24, 16, 55, 25],
    [34, 37, 13],
    [4, 151, 121, 5, 152, 122],
    [4, 75, 47, 14, 76, 48],
    [11, 54, 24, 14, 55, 25],
    [16, 45, 15, 14, 46, 16],
    [6, 147, 117, 4, 148, 118],
    [6, 73, 45, 14, 74, 46],
    [11, 54, 24, 16, 55, 25],
    [30, 46, 16, 2, 47, 17],
    [8, 132, 106, 4, 133, 107],
    [8, 75, 47, 13, 76, 48],
    [7, 54, 24, 22, 55, 25],
    [22, 45, 15, 13, 46, 16],
    [10, 142, 114, 2, 143, 115],
    [19, 74, 46, 4, 75, 47],
    [28, 50, 22, 6, 51, 23],
    [33, 46, 16, 4, 47, 17],
    [8, 152, 122, 4, 153, 123],
    [22, 73, 45, 3, 74, 46],
    [8, 53, 23, 26, 54, 24],
    [12, 45, 15, 28, 46, 16],
    [3, 147, 117, 10, 148, 118],
    [3, 73, 45, 23, 74, 46],
    [4, 54, 24, 31, 55, 25],
    [11, 45, 15, 31, 46, 16],
    [7, 146, 116, 7, 147, 117],
    [21, 73, 45, 7, 74, 46],
    [1, 53, 23, 37, 54, 24],
    [19, 45, 15, 26, 46, 16],
    [5, 145, 115, 10, 146, 116],
    [19, 75, 47, 10, 76, 48],
    [15, 54, 24, 25, 55, 25],
    [23, 45, 15, 25, 46, 16],
    [13, 145, 115, 3, 146, 116],
    [2, 74, 46, 29, 75, 47],
    [42, 54, 24, 1, 55, 25],
    [23, 45, 15, 28, 46, 16],
    [17, 145, 115],
    [10, 74, 46, 23, 75, 47],
    [10, 54, 24, 35, 55, 25],
    [19, 45, 15, 35, 46, 16],
    [17, 145, 115, 1, 146, 116],
    [14, 74, 46, 21, 75, 47],
    [29, 54, 24, 19, 55, 25],
    [11, 45, 15, 46, 46, 16],
    [13, 145, 115, 6, 146, 116],
    [14, 74, 46, 23, 75, 47],
    [44, 54, 24, 7, 55, 25],
    [59, 46, 16, 1, 47, 17],
    [12, 151, 121, 7, 152, 122],
    [12, 75, 47, 26, 76, 48],
    [39, 54, 24, 14, 55, 25],
    [22, 45, 15, 41, 46, 16],
    [6, 151, 121, 14, 152, 122],
    [6, 75, 47, 34, 76, 48],
    [46, 54, 24, 10, 55, 25],
    [2, 45, 15, 64, 46, 16],
    [17, 152, 122, 4, 153, 123],
    [29, 74, 46, 14, 75, 47],
    [49, 54, 24, 10, 55, 25],
    [24, 45, 15, 46, 46, 16],
    [4, 152, 122, 18, 153, 123],
    [13, 74, 46, 32, 75, 47],
    [48, 54, 24, 14, 55, 25],
    [42, 45, 15, 32, 46, 16],
    [20, 147, 117, 4, 148, 118],
    [40, 75, 47, 7, 76, 48],
    [43, 54, 24, 22, 55, 25],
    [10, 45, 15, 67, 46, 16],
    [19, 148, 118, 6, 149, 119],
    [18, 75, 47, 31, 76, 48],
    [34, 54, 24, 34, 55, 25],
    [20, 45, 15, 61, 46, 16]
  ]),
  (v.getRSBlocks = function (o, e) {
    var r = v.getRsBlockTable(o, e);
    if (null == r) throw new Error('bad rs block @ typeNumber:' + o + '/errorCorrectLevel:' + e);
    for (var t = r.length / 3, i = new Array(), n = 0; n < t; n++)
      for (var a = r[3 * n + 0], d = r[3 * n + 1], u = r[3 * n + 2], s = 0; s < a; s++) i.push(new v(d, u));
    return i;
  }),
  (v.getRsBlockTable = function (o, e) {
    switch (e) {
      case t.L:
        return v.RS_BLOCK_TABLE[4 * (o - 1) + 0];
      case t.M:
        return v.RS_BLOCK_TABLE[4 * (o - 1) + 1];
      case t.Q:
        return v.RS_BLOCK_TABLE[4 * (o - 1) + 2];
      case t.H:
        return v.RS_BLOCK_TABLE[4 * (o - 1) + 3];
      default:
        return;
    }
  }),
  (p.prototype = {
    get: function (o) {
      var e = Math.floor(o / 8);
      return 1 == ((this.buffer[e] >>> (7 - (o % 8))) & 1);
    },
    put: function (o, e) {
      for (var r = 0; r < e; r++) this.putBit(1 == ((o >>> (e - r - 1)) & 1));
    },
    getLengthInBits: function () {
      return this.length;
    },
    putBit: function (o) {
      var e = Math.floor(this.length / 8);
      this.buffer.length <= e && this.buffer.push(0), o && (this.buffer[e] |= 128 >>> this.length % 8), this.length++;
    }
  }),
  (e.errorCorrectLevel = t),
  (b.errorCorrectLevel = e.errorCorrectLevel),
  (b.Error = function (o) {
    this.errMsg = '[uQRCode]: ' + o;
  }),
  (b.plugins = []),
  (b.use = function (o) {
    'function' == typeof o && b.plugins.push(o);
  }),
  (b.prototype.loadImage = function (o) {
    return Promise.resolve(o);
  }),
  (b.prototype.setOptions = function (o) {
    var e,
      r,
      t,
      i,
      n,
      a,
      d,
      u,
      s,
      g,
      l,
      h,
      c,
      m,
      f,
      v,
      p,
      C,
      b,
      k,
      y,
      w,
      I,
      B,
      S,
      P,
      L,
      D,
      A,
      E,
      T,
      N,
      M,
      z,
      R,
      _,
      O,
      F,
      x,
      H,
      X,
      Y,
      j,
      W,
      G,
      K,
      Q,
      U,
      $,
      J,
      q,
      V,
      Z,
      oo,
      eo,
      ro;
    o &&
      (Object.keys(o).forEach((e) => {
        this[e] = o[e];
      }),
      (function (o = {}, e = {}, r = !1) {
        let t;
        t = r ? o : { ...o };
        for (let o in e) {
          var i = e[o];
          null != i &&
            (i.constructor == Object
              ? (t[o] = this.deepReplace(t[o], i))
              : i.constructor != String || i
              ? (t[o] = i)
              : (t[o] = t[o]));
        }
      })(
        this,
        {
          data: o.data || o.text,
          size: o.size,
          useDynamicSize: o.useDynamicSize,
          typeNumber: o.typeNumber,
          errorCorrectLevel: o.errorCorrectLevel,
          margin: o.margin,
          areaColor: o.areaColor,
          backgroundColor: o.backgroundColor || (null === (e = o.background) || void 0 === e ? void 0 : e.color),
          backgroundImageSrc:
            o.backgroundImageSrc ||
            (null === (r = o.background) || void 0 === r || null === (t = r.image) || void 0 === t ? void 0 : t.src),
          backgroundImageWidth:
            o.backgroundImageWidth ||
            (null === (i = o.background) || void 0 === i || null === (n = i.image) || void 0 === n ? void 0 : n.width),
          backgroundImageHeight:
            o.backgroundImageHeight ||
            (null === (a = o.background) || void 0 === a || null === (d = a.image) || void 0 === d ? void 0 : d.height),
          backgroundImageX:
            o.backgroundImageX ||
            (null === (u = o.background) || void 0 === u || null === (s = u.image) || void 0 === s ? void 0 : s.x),
          backgroundImageY:
            o.backgroundImageY ||
            (null === (g = o.background) || void 0 === g || null === (l = g.image) || void 0 === l ? void 0 : l.y),
          backgroundImageAlpha:
            o.backgroundImageAlpha ||
            (null === (h = o.background) || void 0 === h || null === (c = h.image) || void 0 === c ? void 0 : c.alpha),
          backgroundImageBorderRadius:
            o.backgroundImageBorderRadius ||
            (null === (m = o.background) || void 0 === m || null === (f = m.image) || void 0 === f
              ? void 0
              : f.borderRadius),
          backgroundPadding: o.backgroundPadding,
          foregroundColor: o.foregroundColor || (null === (v = o.foreground) || void 0 === v ? void 0 : v.color),
          foregroundImageSrc:
            o.foregroundImageSrc ||
            (null === (p = o.foreground) || void 0 === p || null === (C = p.image) || void 0 === C ? void 0 : C.src),
          foregroundImageWidth:
            o.foregroundImageWidth ||
            (null === (b = o.foreground) || void 0 === b || null === (k = b.image) || void 0 === k ? void 0 : k.width),
          foregroundImageHeight:
            o.foregroundImageHeight ||
            (null === (y = o.foreground) || void 0 === y || null === (w = y.image) || void 0 === w ? void 0 : w.height),
          foregroundImageX:
            o.foregroundImageX ||
            (null === (I = o.foreground) || void 0 === I || null === (B = I.image) || void 0 === B ? void 0 : B.x),
          foregroundImageY:
            o.foregroundImageY ||
            (null === (S = o.foreground) || void 0 === S || null === (P = S.image) || void 0 === P ? void 0 : P.y),
          foregroundImagePadding:
            o.foregroundImagePadding ||
            (null === (L = o.foreground) || void 0 === L || null === (D = L.image) || void 0 === D
              ? void 0
              : D.padding),
          foregroundImageBackgroundColor:
            o.foregroundImageBackgroundColor ||
            (null === (A = o.foreground) || void 0 === A || null === (E = A.image) || void 0 === E
              ? void 0
              : E.backgroundColor),
          foregroundImageBorderRadius:
            o.foregroundImageBorderRadius ||
            (null === (T = o.foreground) || void 0 === T || null === (N = T.image) || void 0 === N
              ? void 0
              : N.borderRadius),
          foregroundImageShadowOffsetX:
            o.foregroundImageShadowOffsetX ||
            (null === (M = o.foreground) || void 0 === M || null === (z = M.image) || void 0 === z
              ? void 0
              : z.shadowOffsetX),
          foregroundImageShadowOffsetY:
            o.foregroundImageShadowOffsetY ||
            (null === (R = o.foreground) || void 0 === R || null === (_ = R.image) || void 0 === _
              ? void 0
              : _.shadowOffsetY),
          foregroundImageShadowBlur:
            o.foregroundImageShadowBlur ||
            (null === (O = o.foreground) || void 0 === O || null === (F = O.image) || void 0 === F
              ? void 0
              : F.shadowBlur),
          foregroundImageShadowColor:
            o.foregroundImageShadowColor ||
            (null === (x = o.foreground) || void 0 === x || null === (H = x.image) || void 0 === H
              ? void 0
              : H.shadowColor),
          foregroundPadding: o.foregroundPadding,
          positionProbeBackgroundColor:
            o.positionProbeBackgroundColor ||
            (null === (X = o.positionProbe) || void 0 === X ? void 0 : X.backgroundColor) ||
            (null === (Y = o.positionDetection) || void 0 === Y ? void 0 : Y.backgroundColor),
          positionProbeForegroundColor:
            o.positionProbeForegroundColor ||
            (null === (j = o.positionProbe) || void 0 === j ? void 0 : j.foregroundColor) ||
            (null === (W = o.positionDetection) || void 0 === W ? void 0 : W.foregroundColor),
          separatorColor: o.separatorColor || (null === (G = o.separator) || void 0 === G ? void 0 : G.color),
          positionAdjustBackgroundColor:
            o.positionAdjustBackgroundColor ||
            (null === (K = o.positionAdjust) || void 0 === K ? void 0 : K.backgroundColor) ||
            (null === (Q = o.alignment) || void 0 === Q ? void 0 : Q.backgroundColor),
          positionAdjustForegroundColor:
            o.positionAdjustForegroundColor ||
            (null === (U = o.positionAdjust) || void 0 === U ? void 0 : U.foregroundColor) ||
            (null === ($ = o.alignment) || void 0 === $ ? void 0 : $.foregroundColor),
          timingBackgroundColor:
            o.timingBackgroundColor || (null === (J = o.timing) || void 0 === J ? void 0 : J.backgroundColor),
          timingForegroundColor:
            o.timingForegroundColor || (null === (q = o.timing) || void 0 === q ? void 0 : q.foregroundColor),
          typeNumberBackgroundColor:
            o.typeNumberBackgroundColor ||
            (null === (V = o.typeNumber) || void 0 === V ? void 0 : V.backgroundColor) ||
            (null === (Z = o.versionInformation) || void 0 === Z ? void 0 : Z.backgroundColor),
          typeNumberForegroundColor:
            o.typeNumberForegroundColor ||
            (null === (oo = o.typeNumber) || void 0 === oo ? void 0 : oo.foregroundColor) ||
            (null === (eo = o.versionInformation) || void 0 === eo ? void 0 : eo.foregroundColor),
          darkBlockColor: o.darkBlockColor || (null === (ro = o.darkBlock) || void 0 === ro ? void 0 : ro.color)
        },
        !0
      ));
  }),
  (b.prototype.make = function () {
    let {
      foregroundColor: o,
      backgroundColor: r,
      typeNumber: t,
      errorCorrectLevel: i,
      data: n,
      size: a,
      margin: d,
      useDynamicSize: u
    } = this;
    if (o === r)
      throw (
        (console.error('[uQRCode]: foregroundColor and backgroundColor cannot be the same!'),
        new b.Error('foregroundColor and backgroundColor cannot be the same!'))
      );
    var s = new e(t, i);
    s.addData(
      (function (o) {
        o = o.toString();
        for (var e, r = '', t = 0; t < o.length; t++)
          (e = o.charCodeAt(t)) >= 1 && e <= 127
            ? (r += o.charAt(t))
            : e > 2047
            ? ((r += String.fromCharCode(224 | ((e >> 12) & 15))),
              (r += String.fromCharCode(128 | ((e >> 6) & 63))),
              (r += String.fromCharCode(128 | ((e >> 0) & 63))))
            : ((r += String.fromCharCode(192 | ((e >> 6) & 31))), (r += String.fromCharCode(128 | ((e >> 0) & 63))));
        return r;
      })(n)
    ),
      s.make(),
      (this.base = s),
      (this.typeNumber = s.typeNumber),
      (this.modules = s.modules),
      (this.moduleCount = s.moduleCount),
      (this.dynamicSize = u ? Math.ceil((a - 2 * d) / s.moduleCount) * s.moduleCount + 2 * d : a),
      (function (o) {
        let {
            dynamicSize: e,
            margin: r,
            backgroundColor: t,
            backgroundPadding: i,
            foregroundColor: n,
            foregroundPadding: a,
            modules: d,
            moduleCount: u
          } = o,
          s = (e - 2 * r) / u,
          g = s,
          l = 0;
        i > 0 && ((l = (g * i) / 2), (g -= 2 * l));
        let h = s,
          c = 0;
        a > 0 && ((c = (h * a) / 2), (h -= 2 * c));
        for (var m = 0; m < u; m++)
          for (var f = 0; f < u; f++) {
            var v = f * s + r,
              p = m * s + r;
            if (d[m][f]) {
              var C = c,
                b = v + c,
                k = p + c,
                y = h,
                w = h;
              d[m][f] = {
                type: ['foreground'],
                color: n,
                isBlack: !0,
                isDrawn: !1,
                destX: v,
                destY: p,
                destWidth: s,
                destHeight: s,
                x: b,
                y: k,
                width: y,
                height: w,
                paddingTop: C,
                paddingRight: C,
                paddingBottom: C,
                paddingLeft: C
              };
            } else
              (C = l),
                (b = v + l),
                (k = p + l),
                (y = g),
                (w = g),
                (d[m][f] = {
                  type: ['background'],
                  color: t,
                  isBlack: !1,
                  isDrawn: !1,
                  destX: v,
                  destY: p,
                  destWidth: s,
                  destHeight: s,
                  x: b,
                  y: k,
                  width: y,
                  height: w,
                  paddingTop: C,
                  paddingRight: C,
                  paddingBottom: C,
                  paddingLeft: C
                });
          }
      })(this),
      (function (o) {
        let { modules: e, moduleCount: r, positionProbeBackgroundColor: t, positionProbeForegroundColor: i } = o,
          n = r - 7;
        [
          [0, 0, 1],
          [1, 0, 1],
          [2, 0, 1],
          [3, 0, 1],
          [4, 0, 1],
          [5, 0, 1],
          [6, 0, 1],
          [0, 1, 1],
          [1, 1, 0],
          [2, 1, 0],
          [3, 1, 0],
          [4, 1, 0],
          [5, 1, 0],
          [6, 1, 1],
          [0, 2, 1],
          [1, 2, 0],
          [2, 2, 1],
          [3, 2, 1],
          [4, 2, 1],
          [5, 2, 0],
          [6, 2, 1],
          [0, 3, 1],
          [1, 3, 0],
          [2, 3, 1],
          [3, 3, 1],
          [4, 3, 1],
          [5, 3, 0],
          [6, 3, 1],
          [0, 4, 1],
          [1, 4, 0],
          [2, 4, 1],
          [3, 4, 1],
          [4, 4, 1],
          [5, 4, 0],
          [6, 4, 1],
          [0, 5, 1],
          [1, 5, 0],
          [2, 5, 0],
          [3, 5, 0],
          [4, 5, 0],
          [5, 5, 0],
          [6, 5, 1],
          [0, 6, 1],
          [1, 6, 1],
          [2, 6, 1],
          [3, 6, 1],
          [4, 6, 1],
          [5, 6, 1],
          [6, 6, 1]
        ].forEach((o) => {
          var r = e[o[0]][o[1]],
            a = e[o[0] + n][o[1]],
            d = e[o[0]][o[1] + n];
          d.type.push('positionProbe'),
            a.type.push('positionProbe'),
            r.type.push('positionProbe'),
            (r.color = 1 == o[2] ? i : t),
            (a.color = 1 == o[2] ? i : t),
            (d.color = 1 == o[2] ? i : t);
        });
      })(this),
      (function (o) {
        let { modules: e, moduleCount: r, separatorColor: t } = o;
        [
          [7, 0],
          [7, 1],
          [7, 2],
          [7, 3],
          [7, 4],
          [7, 5],
          [7, 6],
          [7, 7],
          [0, 7],
          [1, 7],
          [2, 7],
          [3, 7],
          [4, 7],
          [5, 7],
          [6, 7]
        ].forEach((o) => {
          var i = e[o[0]][o[1]],
            n = e[r - o[0] - 1][o[1]],
            a = e[o[0]][r - o[1] - 1];
          a.type.push('separator'),
            n.type.push('separator'),
            i.type.push('separator'),
            (i.color = t),
            (n.color = t),
            (a.color = t);
        });
      })(this),
      (function (o) {
        let {
          typeNumber: e,
          modules: r,
          moduleCount: t,
          foregroundColor: i,
          backgroundColor: n,
          positionAdjustForegroundColor: a,
          positionAdjustBackgroundColor: d,
          timingForegroundColor: u,
          timingBackgroundColor: s
        } = o;
        const g = [
          [],
          [6, 18],
          [6, 22],
          [6, 26],
          [6, 30],
          [6, 34],
          [6, 22, 38],
          [6, 24, 42],
          [6, 26, 46],
          [6, 28, 50],
          [6, 30, 54],
          [6, 32, 58],
          [6, 34, 62],
          [6, 26, 46, 66],
          [6, 26, 48, 70],
          [6, 26, 50, 74],
          [6, 30, 54, 78],
          [6, 30, 56, 82],
          [6, 30, 58, 86],
          [6, 34, 62, 90],
          [6, 28, 50, 72, 94],
          [6, 26, 50, 74, 98],
          [6, 30, 54, 78, 102],
          [6, 28, 54, 80, 106],
          [6, 32, 58, 84, 110],
          [6, 30, 58, 86, 114],
          [6, 34, 62, 90, 118],
          [6, 26, 50, 74, 98, 122],
          [6, 30, 54, 78, 102, 126],
          [6, 26, 52, 78, 104, 130],
          [6, 30, 56, 82, 108, 134],
          [6, 34, 60, 86, 112, 138],
          [6, 30, 58, 86, 114, 142],
          [6, 34, 62, 90, 118, 146],
          [6, 30, 54, 78, 102, 126, 150],
          [6, 24, 50, 76, 102, 128, 154],
          [6, 28, 54, 80, 106, 132, 158],
          [6, 32, 58, 84, 110, 136, 162],
          [6, 26, 54, 82, 110, 138, 166],
          [6, 30, 58, 86, 114, 142, 170]
        ][e - 1];
        if (g) {
          const o = [
              [-2, -2, 1],
              [-1, -2, 1],
              [0, -2, 1],
              [1, -2, 1],
              [2, -2, 1],
              [-2, -1, 1],
              [-1, -1, 0],
              [0, -1, 0],
              [1, -1, 0],
              [2, -1, 1],
              [-2, 0, 1],
              [-1, 0, 0],
              [0, 0, 1],
              [1, 0, 0],
              [2, 0, 1],
              [-2, 1, 1],
              [-1, 1, 0],
              [0, 1, 0],
              [1, 1, 0],
              [2, 1, 1],
              [-2, 2, 1],
              [-1, 2, 1],
              [0, 2, 1],
              [1, 2, 1],
              [2, 2, 1]
            ],
            e = g.length;
          for (let l = 0; l < e; l++)
            for (let h = 0; h < e; h++) {
              let { x: e, y: c } = { x: g[l], y: g[h] };
              (e < 9 && c < 9) ||
                (e > t - 9 - 1 && c < 9) ||
                (c > t - 9 - 1 && e < 9) ||
                o.forEach((o) => {
                  var t = r[e + o[0]][c + o[1]];
                  t.type.push('positionAdjust'),
                    t.type.includes('timing')
                      ? 1 == o[2]
                        ? (t.color = a == i ? u : a)
                        : (t.color = a == i && d == n ? s : d)
                      : (t.color = 1 == o[2] ? a : d);
                });
            }
        }
      })(this),
      (function (o) {
        let { modules: e, moduleCount: r, timingForegroundColor: t, timingBackgroundColor: i } = o,
          n = r - 16;
        for (let o = 0; o < n; o++) {
          var a = e[6][8 + o],
            d = e[8 + o][6];
          a.type.push('timing'),
            d.type.push('timing'),
            (a.color = (1 & o) ^ 1 ? t : i),
            (d.color = (1 & o) ^ 1 ? t : i);
        }
      })(this),
      (function (o) {
        let { modules: e, moduleCount: r, darkBlockColor: t } = o;
        var i = e[r - 7 - 1][8];
        i.type.push('darkBlock'), (i.color = t);
      })(this),
      (function (o) {
        let {
          typeNumber: e,
          modules: r,
          moduleCount: t,
          typeNumberBackgroundColor: i,
          typeNumberForegroundColor: n
        } = o;
        if (e < 7) return r;
        const a = [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          '000111110010010100',
          '001000010110111100',
          '001001101010011001',
          '001010010011010011',
          '001011101111110110',
          '001100011101100010',
          '001101100001000111',
          '001110011000001101',
          '001111100100101000',
          '010000101101111000',
          '010001010001011101',
          '010010101000010111',
          '010011010100110010',
          '010100100110100110',
          '010101011010000011',
          '010110100011001001',
          '010111011111101100',
          '011000111011000100',
          '011001000111100001',
          '011010111110101011',
          '011011000010001110',
          '011100110000011010',
          '011101001100111111',
          '011110110101110101',
          '011111001001010000',
          '100000100111010101',
          '100001011011110000',
          '100010100010111010',
          '100011011110011111',
          '100100101100001011',
          '100101010000101110',
          '100110101001100100',
          '100111010101000001',
          '101000110001101001'
        ];
        let d = a[e] + a[e],
          u = [t - 11, t - 10, t - 9];
        [
          [5, u[2]],
          [5, u[1]],
          [5, u[0]],
          [4, u[2]],
          [4, u[1]],
          [4, u[0]],
          [3, u[2]],
          [3, u[1]],
          [3, u[0]],
          [2, u[2]],
          [2, u[1]],
          [2, u[0]],
          [1, u[2]],
          [1, u[1]],
          [1, u[0]],
          [0, u[2]],
          [0, u[1]],
          [0, u[0]],
          [u[2], 5],
          [u[1], 5],
          [u[0], 5],
          [u[2], 4],
          [u[1], 4],
          [u[0], 4],
          [u[2], 3],
          [u[1], 3],
          [u[0], 3],
          [u[2], 2],
          [u[1], 2],
          [u[0], 2],
          [u[2], 1],
          [u[1], 1],
          [u[0], 1],
          [u[2], 0],
          [u[1], 0],
          [u[0], 0]
        ].forEach((o, e) => {
          var t = r[o[0]][o[1]];
          t.type.push('typeNumber'), (t.color = '1' == d[e] ? n : i);
        });
      })(this),
      (this.isMaked = !0),
      (this.drawModules = []);
  }),
  (b.prototype.getDrawModules = function () {
    if (this.drawModules && this.drawModules.length > 0) return this.drawModules;
    let o = (this.drawModules = []),
      {
        modules: e,
        moduleCount: r,
        dynamicSize: t,
        areaColor: i,
        backgroundImageSrc: n,
        backgroundImageX: a,
        backgroundImageY: d,
        backgroundImageWidth: u,
        backgroundImageHeight: s,
        backgroundImageAlpha: g,
        backgroundImageBorderRadius: l,
        foregroundImageSrc: h,
        foregroundImageX: c,
        foregroundImageY: m,
        foregroundImageWidth: f,
        foregroundImageHeight: v,
        foregroundImagePadding: p,
        foregroundImageBackgroundColor: C,
        foregroundImageBorderRadius: b,
        foregroundImageShadowOffsetX: k,
        foregroundImageShadowOffsetY: y,
        foregroundImageShadowBlur: w,
        foregroundImageShadowColor: I
      } = this;
    i && o.push({ name: 'area', type: 'area', color: i, x: 0, y: 0, width: t, height: t }),
      n &&
        o.push({
          name: 'backgroundImage',
          type: 'image',
          imageSrc: n,
          mappingName: 'backgroundImageSrc',
          x: a,
          y: d,
          width: u,
          height: s,
          alpha: g,
          borderRadius: l
        });
    for (var B = 0; B < r; B++)
      for (var S = 0; S < r; S++) {
        var P = e[B][S];
        P.isDrawn ||
          (P.type.includes('foreground')
            ? o.push({
                name: 'foreground',
                type: 'tile',
                color: P.color,
                destX: P.destX,
                destY: P.destY,
                destWidth: P.destWidth,
                destHeight: P.destHeight,
                x: P.x,
                y: P.y,
                width: P.width,
                height: P.height,
                paddingTop: P.paddingTop,
                paddingRight: P.paddingRight,
                paddingBottom: P.paddingBottom,
                paddingLeft: P.paddingLeft,
                rowIndex: B,
                colIndex: S
              })
            : o.push({
                name: 'background',
                type: 'tile',
                color: P.color,
                destX: P.destX,
                destY: P.destY,
                destWidth: P.destWidth,
                destHeight: P.destHeight,
                x: P.x,
                y: P.y,
                width: P.width,
                height: P.height,
                paddingTop: P.paddingTop,
                paddingRight: P.paddingRight,
                paddingBottom: P.paddingBottom,
                paddingLeft: P.paddingLeft,
                rowIndex: B,
                colIndex: S
              }),
          (P.isDrawn = !0));
      }
    return (
      h &&
        o.push({
          name: 'foregroundImage',
          type: 'image',
          imageSrc: h,
          mappingName: 'foregroundImageSrc',
          x: c,
          y: m,
          width: f,
          height: v,
          padding: p,
          backgroundColor: C,
          borderRadius: b,
          shadowOffsetX: k,
          shadowOffsetY: y,
          shadowBlur: w,
          shadowColor: I
        }),
      o
    );
  }),
  (b.prototype.isBlack = function (o, e) {
    var r = this.moduleCount;
    return !(0 > o || 0 > e || o >= r || e >= r) && this.modules[o][e].isBlack;
  }),
  (b.prototype.drawCanvas = function () {
    let {
      isMaked: o,
      canvasContext: e,
      useDynamicSize: r,
      dynamicSize: t,
      foregroundColor: i,
      foregroundPadding: n,
      backgroundColor: a,
      backgroundPadding: d,
      drawReserve: u,
      margin: s
    } = this;
    if (!o)
      return (
        console.error('[uQRCode]: please execute the make method first!'),
        Promise.reject(new b.Error('please execute the make method first!'))
      );
    let g = this.getDrawModules(),
      l = async (o, r) => {
        try {
          e.clearRect(0, 0, t, t), e.draw(!1);
          for (var i = 0; i < g.length; i++) {
            var n = g[i];
            switch ((e.save(), n.type)) {
              case 'area':
                e.setFillStyle(n.color), e.fillRect(n.x, n.y, n.width, n.height);
                break;
              case 'tile':
                var a = n.x,
                  d = n.y,
                  s = n.width,
                  l = n.height;
                e.setFillStyle(n.color), e.fillRect(a, d, s, l);
                break;
              case 'image':
                if ('backgroundImage' === n.name) {
                  (a = Math.round(n.x)), (d = Math.round(n.y)), (s = Math.round(n.width)), (l = Math.round(n.height));
                  s < 2 * (c = Math.round(n.borderRadius)) && (c = s / 2),
                    l < 2 * c && (c = l / 2),
                    e.setGlobalAlpha(n.alpha),
                    c > 0 &&
                      (e.beginPath(),
                      e.moveTo(a + c, d),
                      e.arcTo(a + s, d, a + s, d + l, c),
                      e.arcTo(a + s, d + l, a, d + l, c),
                      e.arcTo(a, d + l, a, d, c),
                      e.arcTo(a, d, a + s, d, c),
                      e.closePath(),
                      e.setStrokeStyle('rgba(0,0,0,0)'),
                      e.stroke(),
                      e.clip());
                  try {
                    var h = await this.loadImage(n.imageSrc);
                    e.drawImage(h, a, d, s, l);
                  } catch (o) {
                    throw (
                      (console.error(`[uQRCode]: ${n.mappingName} invalid!`), new b.Error(`${n.mappingName} invalid!`))
                    );
                  }
                } else if ('foregroundImage' === n.name) {
                  (a = Math.round(n.x)), (d = Math.round(n.y)), (s = Math.round(n.width)), (l = Math.round(n.height));
                  var c,
                    m = Math.round(n.padding);
                  s < 2 * (c = Math.round(n.borderRadius)) && (c = s / 2), l < 2 * c && (c = l / 2);
                  var f = a - m,
                    v = d - m,
                    p = s + 2 * m,
                    C = l + 2 * m,
                    k = Math.round((p / s) * c);
                  p < 2 * k && (k = p / 2),
                    C < 2 * k && (k = C / 2),
                    e.save(),
                    e.setShadow(n.shadowOffsetX, n.shadowOffsetY, n.shadowBlur, n.shadowColor),
                    k > 0
                      ? (e.beginPath(),
                        e.moveTo(f + k, v),
                        e.arcTo(f + p, v, f + p, v + C, k),
                        e.arcTo(f + p, v + C, f, v + C, k),
                        e.arcTo(f, v + C, f, v, k),
                        e.arcTo(f, v, f + p, v, k),
                        e.closePath(),
                        e.setFillStyle(n.backgroundColor),
                        e.fill())
                      : (e.setFillStyle(n.backgroundColor), e.fillRect(f, v, p, C)),
                    e.restore(),
                    e.save(),
                    k > 0
                      ? (e.beginPath(),
                        e.moveTo(f + k, v),
                        e.arcTo(f + p, v, f + p, v + C, k),
                        e.arcTo(f + p, v + C, f, v + C, k),
                        e.arcTo(f, v + C, f, v, k),
                        e.arcTo(f, v, f + p, v, k),
                        e.closePath(),
                        e.setFillStyle(m > 0 ? n.backgroundColor : 'rgba(0,0,0,0)'),
                        e.fill())
                      : (e.setFillStyle(m > 0 ? n.backgroundColor : 'rgba(0,0,0,0)'), e.fillRect(f, v, p, C)),
                    e.restore(),
                    c > 0 &&
                      (e.beginPath(),
                      e.moveTo(a + c, d),
                      e.arcTo(a + s, d, a + s, d + l, c),
                      e.arcTo(a + s, d + l, a, d + l, c),
                      e.arcTo(a, d + l, a, d, c),
                      e.arcTo(a, d, a + s, d, c),
                      e.closePath(),
                      e.setStrokeStyle('rgba(0,0,0,0)'),
                      e.stroke(),
                      e.clip());
                  try {
                    h = await this.loadImage(n.imageSrc);
                    e.drawImage(h, a, d, s, l);
                  } catch (o) {
                    throw (
                      (console.error(`[uQRCode]: ${n.mappingName} invalid!`), new b.Error(`${n.mappingName} invalid!`))
                    );
                  }
                }
            }
            u && e.draw(!0), e.restore();
          }
          e.draw(!0), setTimeout(o, 150);
        } catch (o) {
          if (!(o instanceof b.Error)) throw o;
          r(o);
        }
      };
    return new Promise((o, e) => {
      l(o, e);
    });
  }),
  (b.prototype.draw = function () {
    return this.drawCanvas();
  }),
  (b.prototype.register = function (o) {
    o && o(b, this, !0);
  });
export { b as default };
